February 18, 2022
자연수 n이 주어졌을 때 n의 다음 큰 숫자는 다음과 같이 정의한다.
n을 이진수로 변경한다. n을 이진수로 만들었을때 갯수를 구하는 테스트를 만든다. 그럼 n을 1씩 증가시키면서 이진수로 만들고 1의 갯수가 n의 이진수 1의 갯수랑 같으면 리턴한다.
const solution = n => {
const binaryCount = getBinaryOneCount(n)
while (true) {
n += 1
if (getBinaryOneCount(n) == binaryCount) {
return n
}
}
}
const getBinaryOneCount = n => {
const binary = n.toString(2)
return binary.split('').filter(v => v == 1).length
}
test('getBinaryOneCount', () => {
expect(getBinaryOneCount(78)).toBe(4)
})
test('solution', () => {
expect(solution(78)).toBe(83)
})